<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>50-3D导航栏</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        li {
            float: left;
            list-style: none;
            /* box和box子元素均需要旋转效果，则给li加透视 */
            /* perspective: 500px; */
            width: 100px;
            height: 50px;
            margin: 50px 5px;
        }
        
        .box,
        .box2 {
            position: relative;
            width: 100%;
            height: 100%;
            transition: all .5s;
            transform-style: preserve-3d;
        }
        
        .box:hover {
            transform: rotateX(90deg);
        }
        
        .box2:hover {
            transform: rotateX(-90deg);
        }
        
        .front,
        .bottom,
        .top {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            font-size: 16px;
            line-height: 50px;
            text-align: center;
        }
        
        .front {
            /* 前面沿着Z轴向前移动 */
            transform: translateZ(25px);
            background: salmon;
            z-index: 1;
        }
        /* 底面向下旋转90度处于垂直的状态后向下移动高度的一半，前面向前移动高度的一半，底面和前面才能边挨边，且中心点的位置在立方体的中心点 */
        
        .bottom {
            background: slateblue;
            transform: translateY(25px) rotateX(-90deg);
        }
        /* 上面向上旋转90度处于垂直的状态后向上移动高度的一半，前面向前移动高度的一半，上面和前面才能边挨边，且中心点的位置在立方体的中心点*/
        
        .top {
            background: #f059f0;
            /* 书写顺序先移动后旋转 */
            transform: translateY(-25px)rotateX(90deg);
        }
    </style>
</head>

<body>
    <ul>
        <li>
            <div class="box">
                <div class="front">这里是前面</div>
                <div class="bottom">这里是底面</div>
            </div>

        </li>
        <li>
            <div class="box2">
                <div class="front">这里是2前面</div>
                <div class="top">这里是2上面</div>
            </div>

        </li>
    </ul>

</body>

</html>